The virtual computer or virtual machine generally refers to a software construct which is designed to mimic, and provide the functionality of, an independent, discrete, and/or physical computer (or portion thereof). Techniques and technology for providing such virtual machines may be referred to as virtualization, and are generally used to provide users with a computing experience which is virtually indistinguishable from that of using an actual computer.
For example, virtualization technology may be used to create one or more such virtual machines, implemented using one or more underlying hardware platforms. For example, a physical/hardware server may be equipped with a certain amount of processing power and memory resources. Virtualization technology may be used to create a virtual machine to be executed by the server computer, where the virtual machine may be allocated some or all of the available processing power and memory resources of the underlying physical server. As is well-known, and as just referenced, the resulting virtual machine may be operated as if it were itself a unique and independent physical computing device. For example, the virtual machine may be associated with and/or may execute its own network address, operating system, and other characteristics traditionally thought of as having a one-to-one relationship with an actual physical computer.
Such virtual machines are known to provide a number of advantages and benefits. For example, such virtual machines may offer a flexibility and ease of use not typically available when using traditionally physical computers. For example, as referenced above, a virtual machine is generally allocated some or all of the available computing resources of the underlying physical hardware, e.g., processing power and memory resources. Thus, such resource allocations for a particular virtual machine may be increased or decreased on an as-needed basis, so that a user of the virtual machine may be provided with an amount of computing ability which is matched to a current need for ability of the user. Consequently, as the computing needs of the user change over time, the virtual machine may be altered in a corresponding manner, so that computing resources may be provided to the user in a cost-effective manner.
In virtualization technology, a program known as a hypervisor may be used to administer or otherwise manage the characteristics and features of one or more virtual machines. That is, either the underlying physical hardware of the virtual machine, or some other computing resource, may be used to implement the hypervisor, so that a user of the hypervisor may alter the characteristics and features of the virtual machine in a desired manner. For example, such a user of the hypervisor may include a network administrator or other administrator in charge of providing one or more virtual machines to one or more customers or other users. In this case, the various customers or other users may experience changes in their computing needs, so that the administrator may use the hypervisor to correspondingly raise, lower, or otherwise modify computing resources allocated to each virtual machine of each customer or other user.
One particular use of such a hypervisor is known as virtual machine migration, in which a virtual machine is migrated or transferred from source hardware resources to destination hardware resources. For example, as referenced above, it may occur that a user of a virtual machine may experience a temporary or long-term increase in their computing needs. In such a case, it may occur that the underlying hardware resources of the virtual machine may be insufficient to meet the desired increase in resources allocated to the virtual machine. Various other reasons may motivate such migrations of a virtual machine from one platform of hardware resources to another, as is known. For example, there may be a need to take a current platform of hardware resources offline, e.g., for maintenance or upgrade. In other examples, such migrations may occur when a provider of the virtual machine obtains new hardware resources which are better-suited to execute the virtual machine.
One technique for executing a migration of a virtual machine is to ensure that all operations of the virtual machine have been stopped, and then to copy or otherwise transfer the virtual machine from the first platform of hardware resources to the second platform of hardware resources. Such a solution, however, may not always be practical or desirable. For example, the virtual machine may currently be in use by a user(s). In particular, it may occur that the virtual machine is deployed to many users, e.g., users within an enterprise or other organization. In such cases, the virtual machine is in essentially constant use, and therefore any stoppage of the virtual machine may represent an undesirable or unacceptable inconvenience for the users. In such cases, the virtual machine may undergo a live migration, in which use of the virtual machine continues largely uninterrupted throughout the migration process.
For example, if a virtual machine is actively providing one or more applications to one or more users, a hypervisor of the virtual machine may be used to initiate a live migration of the virtual machine from its current/source hardware resources to destination hardware resources. The hypervisor may coordinate the transfer of running applications and other aspects of the virtual machine from the source hardware resources to the destination hardware resources. During the time of the transfer, the users of the applications may have no awareness that the applications and virtual machine are in the process of being transferred. For example, the hypervisor may ensure that the source hardware resources continue to provide functionality associated with remaining portions of the virtual machine still stored thereon, while ensuring that already-transferred portions of the virtual machines at the destination hardware resources begin immediately to provide their associated functionality. In this way, use of the virtual machine may continue on a virtually-uninterrupted basis throughout the migration.
In practice, however, it may be difficult to achieve the goal of continuous (or near-continuous) operation of the virtual machine during a live migration. For example, the virtual machine may be very large, e.g., in terms of memory resources, and/or may be frequently accessed by a relatively large number of users. In these and other scenarios, it is difficult to execute a live migration of the virtual machine, without requiring an undesirable or unacceptable level of stoppage or unavailability of the virtual machine during some portion(s) of the migration.